#!/usr/bin/python
# -*-coding:Utf-8 -*

import socket


class Spectateur :
	"""Classe représentant un spectateur avec :
	- la partie
	- la socket
	- l'adresse IP"""
	
	def __init__(self, p_socket, p_adresse) :
		self.partie = None
		self.socket = p_socket
		self.adresse = "{}:{}".format(p_adresse[0], p_adresse[1])
	
	
	def envoyer(self, p_message) :
		self.socket.sendall(p_message)
	
	
	def deconnecter(self) :
		try :
			self.socket.close()
		except :
			print("Socket du spectateur [{}] déjà fermée.".format(self.adresse))
	
	
	def routine(self, p_partie) :
		self.partie = p_partie
		stop = False
		try :
			# Ecoute du client
			while not stop :
				message = self.socket.recv(1024)
				if not message or len(message.strip()) == 0 :
					stop = True
					break
				message_args = message.split("/")
				if len(message_args) >= 1 and message_args[0] == "EXIT" :
					stop = True
		except :
			print("Déconnexion du spectateur [{}].".format(self.adresse))
		finally :
			self.partie.verrou.acquire()
			self.partie.retirer_spectateur(self)
			self.partie.verrou.release()
			self.deconnecter()
